"""
基线模型启动脚本 - 可以从任何目录运行
Author: Model Team
Date: 2025-11-04
Description: 无论从哪个目录运行，都能正确启动基线模型训练
"""

import os
import sys

def find_project_root():
    """查找项目根目录"""
    current = os.path.dirname(os.path.abspath(__file__))

    # 检查是否在正确的项目结构中
    indicators = ['feature', 'model', 'origin', 'clean']
    for _ in range(5):  # 最多向上查找5级目录
        if all(os.path.exists(os.path.join(current, indicator)) for indicator in indicators):
            return current
        parent = os.path.dirname(current)
        if parent == current:  # 已经到达根目录
            break
        current = parent

    return None

def main():
    """主函数"""
    print("🚀 基线模型启动脚本")
    print("=" * 50)

    # 查找项目根目录
    project_root = find_project_root()
    if not project_root:
        print("❌ 无法找到项目根目录")
        print("请确保在正确的项目目录中运行此脚本")
        return False

    print(f"✅ 找到项目根目录: {project_root}")

    # 切换到基线模型目录
    baseline_dir = os.path.join(project_root, 'model', 'baseline')
    if not os.path.exists(baseline_dir):
        print(f"❌ 基线模型目录不存在: {baseline_dir}")
        return False

    print(f"✅ 基线模型目录: {baseline_dir}")

    # 添加到Python路径
    if project_root not in sys.path:
        sys.path.insert(0, project_root)

    # 切换工作目录
    original_cwd = os.getcwd()
    os.chdir(baseline_dir)
    print(f"✅ 切换工作目录到: {baseline_dir}")

    try:
        # 导入并运行基线模型
        from run_baseline import run_baseline_pipeline

        print("\n" + "=" * 50)
        print("开始运行基线模型流程...")
        print("=" * 50)

        success = run_baseline_pipeline()

        if success:
            print("\n🎉 基线模型运行完成!")
            print(f"📁 结果文件保存在: {baseline_dir}/outputs/")
        else:
            print("\n❌ 基线模型运行失败!")

        return success

    except ImportError as e:
        print(f"❌ 导入错误: {e}")
        print("请确保基线模型脚本存在")
        return False
    except Exception as e:
        print(f"❌ 运行错误: {e}")
        import traceback
        traceback.print_exc()
        return False
    finally:
        # 恢复原始工作目录
        os.chdir(original_cwd)

if __name__ == "__main__":
    success = main()
    sys.exit(0 if success else 1)